//求有序数组中k的下标
#include<stdio.h>
int main(){
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    int k=7;
    int num=sizeof(arr)/sizeof(arr[0]);
    int left=0,right=num-1;
    while(left<=right){
        int mid=(left+right)/2;
        if(arr[mid]<k){
            left=mid+1;
        }
        else if(arr[mid]>k){
            right=mid-1;
        }
        else{
            printf("%d",mid);
            break;}
    }
    return 0;
}
//使用二分法判断要找的数是大于中间值还是小于中间值，
// 然后根据大于小于调整左右的位置
//1、循环找到值后记得退出循环
//2、中间值是变量

//编写查找下标的函数:
//#include<stdio.h>
//int binsearch(int x,int v[],int n){
//    int left=0,right=n-1;
//    while(left<=right){
//        int x=(left+right)/2;
//        if(v[x]<n){
//            left=x+1;
//        }
//        else if(v[x]>n){
//            right=x-1;
//        }
//        else{
//            return x;
//        }
//    }
//    return 0;
//}
//int main(){
//    int arr[]={1,2,3,4,5,6,7};
//    int x=0,n=0;
//    scanf("%d",&n);
//    int index=binsearch(x,arr,n);
//    printf("%d",index);
//    return 0;
//}